// Date工具类
export default class DateUtil {

/**
 *
 * @param {*} date  type should be Date or timestamp
 * @param {*} format  string
 */
  static format(date, format= 'yyyy-MM-dd hh:mm') {
    if(!(date instanceof Date)){
      date = new Date(date *1000)
    }
    Date.prototype.Format = function (fmt) {
      let o = {
        'M+': this.getMonth() + 1,                 //月份
        'd+': this.getDate(),                    //日
        'h+': this.getHours(),                   //小时
        'm+': this.getMinutes(),                 //分
        's+': this.getSeconds(),                 //秒
        'q+': Math.floor((this.getMonth() + 3) / 3), //季度
        'S': this.getMilliseconds()             //毫秒
      }
      if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
      for (let k in o)
        if (new RegExp('(' + k + ')').test(fmt))
          fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
      return fmt
    }

    return date.Format(format)
  }


  /**
   * 将数字格式时间转成可读的格式
   * @time int 从1970-01-01之后的秒数
  */
  static human_time(time) {
    //注意
    //拿客户端时间作为参照会有漏洞，比如当客户端时间和互联网时间不一致的时候
    //拿服务器时间作为参照也不合适，可能客户端和服务器的时区不一致，需要修正
    //暂不考虑上述因素，选择方案一
    let now = new Date().getTime()/1000
    let today = date_only(new Date())

    if(now - time < 0) {
      return '将来'
    }
    if(now - time < 60) {
      return Math.ceil(now - time) + '秒前'
    }
    if (now - time < 60 * 60) {
      return Math.ceil((now - time)/ 60) + '分钟前'
    }
    if(now - time < 60 * 60 * 10) {
      return Math.ceil((now - time)/ 3600) + '小时前'
    }
    if(time > today) {
      return '今天'
    }
    if(time > today - 24 * 60 * 60) {
      return '昨天'
    }
    if (time > today - 2 * 24 * 60 * 60) {
      return '前天'
    }
    let diff = date_diff(new Date(time * 1000), new Date(), 'd')
    if (diff < 31) {
      return diff + '天前'
    }
    diff = date_diff(new Date(time * 1000), new Date(), 'm')
    if (diff < 12) {
      return diff + '月前'
    }
    diff = date_diff(new Date(time * 1000), new Date(), 'y')
    return diff + '年前'
  }
}
